Computer technology continues to advance at a rapid pace, with significant developments being made in both software and in the underlying hardware upon which the software executes. One significant advance in computer technology is the development of multi-processor computers, where multiple computer processors are interfaced with one another to permit multiple operations to be performed concurrently, thus improving the overall performance of such computers. Also, a number of multi-processor computer designs rely on logical partitioning to allocate computer resources to further enhance the performance of multiple concurrent tasks.
With logical partitioning, a single physical computer is permitted to operate essentially like multiple and independent virtual computers (referred to as logical partitions), with the various resources in the physical computer (e.g., processors, memory, and input/output devices) allocated among the various logical partitions. Each logical partition may execute a separate operating system, and from the perspective of users and of the software applications executing on the logical partition, operates as a fully independent computer.
A resource shared among the logical partitions, often referred to as a hypervisor or a partition manager, manages the logical partitions and facilitates the allocation of resources to different logical partitions. A system administrator (a human user or a component in the computer) can dynamically move resources from one partition to another in order to manage the workload across the various partitions. The number of partitions and the number of resources can be large, so allocating and moving resources between partitions can result in a significant amount of processing overhead, which adversely impacts the performance of the partitions.
Without a better way of allocating and moving resources among logical partitions, the performance of logically-partitioned systems will continue to suffer.